package com.entmanage.base.collegeco.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.entmanage.common.annotation.Excel;
import com.entmanage.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 实习报告对象 collegeco_intern_report
 *
 * @author lsq
 * @date 2025-08-06
 */
@ApiModel(value = "CollegecoInternReport", description = "实习报告对象")
public class CollegecoInternReport extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 报告ID，主键 */
    @ApiModelProperty(value = "报告ID，主键")
    private Long reportId;

    /** 实习生ID，关联 hrm_intern.intern_id */
    @Excel(name = "实习生ID，关联 hrm_intern.intern_id")
    @ApiModelProperty(value = "实习生ID，关联 hrm_intern.intern_id")
    private Long internId;

    /** 用户ID，冗余便于查询 */
    @Excel(name = "用户ID，冗余便于查询")
    @ApiModelProperty(value = "用户ID，冗余便于查询")
    private Long userId;

    /** 员工ID（转正后可填） */
    @Excel(name = "员工ID", readConverterExp = "转=正后可填")
    @ApiModelProperty(value = "员工ID（转正后可填）")
    private Long empId;

    /** 报告标题，如：2025年暑期实习报告 */
    @Excel(name = "报告标题，如：2025年暑期实习报告")
    @ApiModelProperty(value = "报告标题，如：2025年暑期实习报告")
    private String reportTitle;

    /** 实习周期，如：2025.07.01 - 2025.08.31 */
    @Excel(name = "实习周期，如：2025.07.01 - 2025.08.31")
    @ApiModelProperty(value = "实习周期，如：2025.07.01 - 2025.08.31")
    private String reportPeriod;

    /** 提交时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "提交时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "提交时间")
    private Date submitTime;

    /** 实习目的（为什么实习，想达到什么目标） */
    @Excel(name = "实习目的", readConverterExp = "为=什么实习，想达到什么目标")
    @ApiModelProperty(value = "实习目的（为什么实习，想达到什么目标）")
    private String internshipPurpose;

    /** 实习内容（参与的项目、负责的任务） */
    @Excel(name = "实习内容", readConverterExp = "参=与的项目、负责的任务")
    @ApiModelProperty(value = "实习内容（参与的项目、负责的任务）")
    private String internshipContent;

    /** 实习经历（过程描述，遇到的问题与解决） */
    @Excel(name = "实习经历", readConverterExp = "过=程描述，遇到的问题与解决")
    @ApiModelProperty(value = "实习经历（过程描述，遇到的问题与解决）")
    private String internshipExperience;

    /** 实习体会（收获、成长、不足、建议） */
    @Excel(name = "实习体会", readConverterExp = "收=获、成长、不足、建议")
    @ApiModelProperty(value = "实习体会（收获、成长、不足、建议）")
    private String internshipReflection;

    /** 附件ID列表，JSON格式，如：["1001","1002"]，关联文件表 */
    @Excel(name = "附件ID列表，JSON格式")
    @ApiModelProperty(value = "附件ID列表，JSON格式")
    private String attachments;

    /** 备注（如：需修改、已归档说明） */
    @Excel(name = "备注", readConverterExp = "如=：需修改、已归档说明")
    @ApiModelProperty(value = "备注（如：需修改、已归档说明）")
    private String remarks;

    /** 状态：1-草稿，2-已提交，3-已审核，4-已驳回 */
    @Excel(name = "状态：1-草稿，2-已提交，3-已审核，4-已驳回")
    @ApiModelProperty(value = "状态：1-草稿，2-已提交，3-已审核，4-已驳回")
    private String status;

    /** 审核人 */
    @Excel(name = "审核人")
    @ApiModelProperty(value = "审核人")
    private String mentor;

    /** 审核人ID */
    @Excel(name = "审核人ID")
    @ApiModelProperty(value = "审核人ID")
    private Long mentorId;

    /** 审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "审核时间")
    private Date reviewTime;

    /** 审核意见 */
    @Excel(name = "审核意见")
    @ApiModelProperty(value = "审核意见")
    private String reviewOpinion;

    /** 删除逻辑标识 */
    @ApiModelProperty(value = "删除逻辑标识")
    private String delFlag;

    /** 部门ID */
    @Excel(name = "部门ID")
    @ApiModelProperty(value = "部门ID")
    private Long deptId;

    public void setReportId(Long reportId)
    {
        this.reportId = reportId;
    }

    public Long getReportId()
    {
        return reportId;
    }
    public void setInternId(Long internId)
    {
        this.internId = internId;
    }

    public Long getInternId()
    {
        return internId;
    }
    public void setUserId(Long userId)
    {
        this.userId = userId;
    }

    public Long getUserId()
    {
        return userId;
    }
    public void setEmpId(Long empId)
    {
        this.empId = empId;
    }

    public Long getEmpId()
    {
        return empId;
    }
    public void setReportTitle(String reportTitle)
    {
        this.reportTitle = reportTitle;
    }

    public String getReportTitle()
    {
        return reportTitle;
    }
    public void setReportPeriod(String reportPeriod)
    {
        this.reportPeriod = reportPeriod;
    }

    public String getReportPeriod()
    {
        return reportPeriod;
    }
    public void setSubmitTime(Date submitTime)
    {
        this.submitTime = submitTime;
    }

    public Date getSubmitTime()
    {
        return submitTime;
    }
    public void setInternshipPurpose(String internshipPurpose)
    {
        this.internshipPurpose = internshipPurpose;
    }

    public String getInternshipPurpose()
    {
        return internshipPurpose;
    }
    public void setInternshipContent(String internshipContent)
    {
        this.internshipContent = internshipContent;
    }

    public String getInternshipContent()
    {
        return internshipContent;
    }
    public void setInternshipExperience(String internshipExperience)
    {
        this.internshipExperience = internshipExperience;
    }

    public String getInternshipExperience()
    {
        return internshipExperience;
    }
    public void setInternshipReflection(String internshipReflection)
    {
        this.internshipReflection = internshipReflection;
    }

    public String getInternshipReflection()
    {
        return internshipReflection;
    }
    public void setAttachments(String attachments)
    {
        this.attachments = attachments;
    }

    public String getAttachments()
    {
        return attachments;
    }
    public void setRemarks(String remarks)
    {
        this.remarks = remarks;
    }

    public String getRemarks()
    {
        return remarks;
    }
    public void setStatus(String status)
    {
        this.status = status;
    }

    public String getStatus()
    {
        return status;
    }
    public void setMentor(String mentor)
    {
        this.mentor = mentor;
    }

    public String getMentor()
    {
        return mentor;
    }
    public void setMentorId(Long mentorId)
    {
        this.mentorId = mentorId;
    }

    public Long getMentorId()
    {
        return mentorId;
    }
    public void setReviewTime(Date reviewTime)
    {
        this.reviewTime = reviewTime;
    }

    public Date getReviewTime()
    {
        return reviewTime;
    }
    public void setReviewOpinion(String reviewOpinion)
    {
        this.reviewOpinion = reviewOpinion;
    }

    public String getReviewOpinion()
    {
        return reviewOpinion;
    }
    public void setDelFlag(String delFlag)
    {
        this.delFlag = delFlag;
    }

    public String getDelFlag()
    {
        return delFlag;
    }

    public void setDeptId(Long deptId)
    {
        this.deptId = deptId;
    }

    public Long getDeptId()
    {
        return deptId;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("reportId", getReportId())
            .append("internId", getInternId())
            .append("userId", getUserId())
            .append("empId", getEmpId())
            .append("reportTitle", getReportTitle())
            .append("reportPeriod", getReportPeriod())
            .append("submitTime", getSubmitTime())
            .append("internshipPurpose", getInternshipPurpose())
            .append("internshipContent", getInternshipContent())
            .append("internshipExperience", getInternshipExperience())
            .append("internshipReflection", getInternshipReflection())
            .append("attachments", getAttachments())
            .append("remarks", getRemarks())
            .append("status", getStatus())
                .append("mentor", getMentor())
                .append("mentorId", getMentorId())
            .append("reviewTime", getReviewTime())
            .append("reviewOpinion", getReviewOpinion())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .append("delFlag", getDelFlag())
            .append("createBy", getCreateBy())
            .append("updateBy", getUpdateBy())
            .append("remark", getRemark())
                .append("deptId", getDeptId())
            .toString();
    }
}
